@echo off

:: 第一个参数：日志级别，不同级别的日志会分成不同的日志文件
set LOG_LEVEL=%~1
:: 第二个参数：日志所属模块，不同模块会分成不同的日志文件
set LOG_MODULE=%~2
:: 第三个参数：日志内容
set LOG_CONTENT="%~3"

:: 日志文件
set LOG_FILE=logs\%LOG_LEVEL%_%LOG_MODULE%.log
:: 如果logs文件夹不存在则创建这个文件夹
call lib\tryMkdir logs

:: 日志级别定义
set LEVEL_INFO=info
set LEVEL_ERROR=error


:: 获取当前系统日期
set HOUR=%TIME:~0,2%
:: 小时可能是12小时制，如果小时数字小于10就将数字前的一个空格替换成0
if %HOUR% lss 10 (set HOUR=0%HOUR:~1,2%)
:: 
:: 日期时间（格式如：202408301201）
set DATE_TIME=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %HOUR%:%TIME:~3,2%:%TIME:~6,2%

:: 必须指定日志文件名
if "%LOG_MODULE%" EQU "" (
	echo %DATE_TIME% --- ERROR --- about pinrt.bat please provide the param LOG_MODULE
	echo %DATE_TIME% --- ERROR --- about pinrt.bat please provide the param LOG_MODULE >>%LOG_PATH%\error.log
  	exit /b 1
)

:: 为日志级别设置默认值
if /i "%LOG_LEVEL%" NEQ "%LEVEL_INFO%" (
	if /i "%LOG_LEVEL%" NEQ "%LEVEL_ERROR%" (
		SET LOG_LEVEL=%LEVEL_INFO%
	) else (
		SET LOG_LEVEL=%LEVEL_ERROR%
	)
) else (
	SET LOG_LEVEL=%LEVEL_INFO%
)

setlocal EnableDelayedExpansion
:: 将日志输出到屏幕
echo %DATE_TIME% --- %LOG_LEVEL% --- !LOG_CONTENT:~1,-1!
:: 将日志内容以固定格式 追加到日志文件中
if /i "%LOG_LEVEL%" EQU "error" (
	echo %DATE_TIME% --- %LOG_LEVEL% --- !LOG_CONTENT:~1,-1! >> %LOG_FILE%
	echo %DATE_TIME% --- %LOG_LEVEL% --- !LOG_CONTENT:~1,-1! >> %LOG_FILE%
)
if /i "%LOG_LEVEL%" EQU "info" (
	echo %DATE_TIME% --- %LOG_LEVEL% --- !LOG_CONTENT:~1,-1! >> %LOG_FILE%
)
endlocal

